package ar.edu.unicen.pladema.main;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;

import ar.edu.unicen.pladema.resources.ResourceManager;


/**
 * Clase utilitaria para el manejo de mensajes al usuario.
 *  
 * @author Sebastian Perruolo &lt;sperruolo[at]alumnos.exa.unicen.edu.ar&gt;
 */
public final class Message {
	
	/**
	 * Clases utilitarias no tienen creador.
	 */
	private Message() { }
	
	/**
	 * Muestra un mensaje del tipo si/no.
	 * 
	 * @param shell Shell de la aplicación.
	 * @param msg Mensaje a mostrar al usuario.
	 * @param useResource false para que utilice el msg como está, true para que
	 * 		busque el texto en el archivo.
	 * @return true si el usuario clickeo en si.
	 */
	public static boolean showYesNo(final Shell shell, final String msg, 
			final boolean useResource) {
		int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
		MessageBox messageBox = new MessageBox(shell, style);
		messageBox.setText(ResourceManager.getInstance().getText("APPTITLE"));
		if (useResource) {
			messageBox.setMessage(ResourceManager.getInstance().getText(msg));
		} else {
			messageBox.setMessage(msg);
		}
		return messageBox.open() == SWT.YES;
	}
	
	/**
	 * Muestra un mensaje del tipo si/no.
	 * 
	 * @param shell Shell de la aplicación.
	 * @param msg Mensaje a mostrar al usuario.
	 * @return true si el usuario clickeo en si.
	 */
	public static boolean showYesNo(final Shell shell, final String msg) {
		return showYesNo(shell, msg, true);
	}
	/**
	 * Muestra un mensaje del tipo error.
	 * 
	 * @param shell Shell de la aplicación.
	 * @param msg Mensaje a mostrar al usuario.
	 */
	public static void showError(final Shell shell, final String msg) {
		int style = SWT.APPLICATION_MODAL | SWT.OK;
		MessageBox messageBox = new MessageBox(shell, style);
		messageBox.setText(ResourceManager.getInstance().getText("APPTITLE") 
				+ " - Error");
		messageBox.setMessage(ResourceManager.getInstance().getText(msg));
		messageBox.open();
	}
	
	/**
	 * Muestra un mensaje del tipo información.
	 * 
	 * @param shell Shell de la aplicación.
	 * @param msg Mensaje a mostrar al usuario.
	 */
	public static void showInfo(final Shell shell, final String msg) {
		int style = SWT.APPLICATION_MODAL | SWT.OK | SWT.ICON_INFORMATION;
		MessageBox messageBox = new MessageBox(shell, style);
		messageBox.setText(ResourceManager.getInstance().getText("APPTITLE"));
		messageBox.setMessage(ResourceManager.getInstance().getText(msg));
		messageBox.open();
	}
}
